//配置axios的全局基本路径
axios.defaults.baseURL='http://localhost:8080/'
//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios
Vue.prototype.dfsUrl = 'http://47.95.117.210:8888'

//前端拦截器，为了后端校验是否已经登录，只要用axios的请求都要携带token
//=========*********=========//
axios.interceptors.request.use(config=>{
    let token = localStorage.getItem("token")
    if(token){
        config.headers["token"] = token;
    }
    return config;
},error => {
    Promise.reject(error)
})
//=========*********=========//

// 后置拦截器，
axios.interceptors.response.use(config=>{
    let data = config.data;
    if(!data.success && "noLogin"===data.message)
    {
        localStorage.removeItem("token"); // 删除
        localStorage.removeItem("loginInfo");
        router.push({ path: '/login' }); // 登录页面
    }
    return config;
},error => {
    Promise.reject(error)
})

//前台登入拦截器
//前端的登录拦截-axios-set.js会被所有的界面导入
// 判断localStorage中是否有logininfo
let url = location.href;//获取请求地址
//alert(url)http://127.0.0.1/index.html
//不是登录且不是注册，就要拦截  url.indexOf("login.html")==-1
if(url.indexOf("login.html")==-1
    && url.indexOf("register.html")==-1
    && url.indexOf("callback.html")==-1
    && url.indexOf("binder.html")==-1
    && url.indexOf("baidu.html")==-1
    && url.indexOf("publish.html")==-1
    && url.indexOf("product.html")==-1
    && url.indexOf("index.html")==-1) {
    let loginInfo = localStorage.getItem("loginInfo");
    if(!loginInfo){//没有登入用户信息，拦截跳转到登入界面
        location.href = "/login.html"
    }
}

/**
 * 解析url获取参数对象
 * @param url
 * @returns {{}}
 */
function parseUrlParams2Obj(url){
    //获取请求参数
    let paramStr = url.substring(url.indexOf("?")+1);//code=021FdXFa14mYlA016OGa1L3R4X0FdXFO&state=1
    let paramStrs = paramStr.split("&");//[code=021FdXFa14mYlA016OGa1L3R4X0FdXFO,state=1]
    let paramObj = {};
    for(let i=0;i<paramStrs.length;i++){
        let paramName = paramStrs[i].split("=")[0];//code
        let paramValue = paramStrs[i].split("=")[1];//021FdXFa14mYlA016OGa1L3R4X0FdXFO
        paramObj[paramName] = paramValue;
    }
    return paramObj;
}
